package com.sz.admin.system.config;

import com.sz.admin.system.service.FolderMonitorService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;

import jakarta.annotation.PreDestroy;

/**
 * 文件监控配置
 * 负责在应用程序关闭时优雅地停止所有监控任务
 *
 * @author sz-admin
 * @since 2025-01-13
 */
@Slf4j
@Configuration
@RequiredArgsConstructor
public class FileMonitorConfig {

    private final FolderMonitorService folderMonitorService;

    @PreDestroy
    public void destroy() {
        log.info("应用程序正在关闭，停止所有文件监控服务");
        
        try {
            folderMonitorService.stopAllMonitors();
            log.info("文件监控服务已停止");
        } catch (Exception e) {
            // 在应用程序关闭过程中，中断异常是正常的，不需要作为错误记录
            if (e instanceof InterruptedException || e.getCause() instanceof InterruptedException) {
                log.info("文件监控服务在应用关闭过程中被中断，属于正常现象");
            } else {
                log.error("停止文件监控服务时出错", e);
            }
        }
    }

}